package com.saydc.actions.puestos.generico;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.saydc.dao.EvaluacionesDAO;
import com.saydc.dao.PuestosDAO;
import com.saydc.exceptions.UnableToDeleteException;
import com.saydc.forms.puestos.generico.ActualizaPuestoGenericoForm;
import com.saydc.model.Evaluacion;
import com.saydc.model.Puesto;

public class AccionPuestosGenericosAction extends DispatchAction {

	@SuppressWarnings("unchecked")
	public ActionForward editar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		ArrayList<Puesto> listaPuestosGenericos = (ArrayList<Puesto>)request.getSession().getAttribute("listaPuestosGen");
		String indexPuesto = request.getParameter("index");
		Puesto puesto = listaPuestosGenericos.get(Integer.parseInt(indexPuesto));
		request.getSession().setAttribute("puesto", puesto);
		EvaluacionesDAO dao = EvaluacionesDAO.getInstance();
		List<Evaluacion> tipoEvaluaciones = (List<Evaluacion>)dao.getEvaluaciones();
		request.getSession().setAttribute("tipoEval", tipoEvaluaciones);
		return mapping.findForward("editarPuestoGenerico");
	}
	
	@SuppressWarnings("unchecked")
	public ActionForward borrar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response){
		
		ArrayList<Puesto> listaPuestosGenericos = (ArrayList<Puesto>)request.getSession().getAttribute("listaPuestosGen");
		String indexPuesto = request.getParameter("index");
		Puesto puesto = listaPuestosGenericos.get(Integer.parseInt(indexPuesto));
		request.getSession().setAttribute("puesto", puesto);
		PuestosDAO dao = PuestosDAO.getInstance();
		try{
			dao.borrarPuesto(puesto);
		}catch(UnableToDeleteException e){
			return mapping.findForward("failure");
		}
		return mapping.findForward("success");
	}
	
	public ActionForward confirmaEditar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		Puesto puesto = (Puesto)request.getSession().getAttribute("puesto");
		ActualizaPuestoGenericoForm puestoForm = (ActualizaPuestoGenericoForm)form;
		
		puesto.setNombrePuesto(puestoForm.getNombre());
		puesto.setEvaluacion(Evaluacion.getTipoEvaluacion(puestoForm.getIdTipoEval()));
		puesto.setRemuneracionMinima(Double.parseDouble(puestoForm.getRemMinima()));
		puesto.setRemuneracionMaxima(Double.parseDouble(puestoForm.getRemMaxima()));

		PuestosDAO dao = PuestosDAO.getInstance();
		dao.actualizarPuesto(puesto);
		return mapping.findForward("success");
	}
}
